package cn.tedu.type;

import java.util.ArrayList;
import java.util.List;

public class TypeDemo2 {
    public static void main(String[] args) {

        List<Integer> list1=new ArrayList<>();
        list1.add(1213);
        list1.add(123);
        list1.add(113);
        list1.add(213);
        List<Double> list2=new ArrayList<>();
        list2.add(2.345);
        list2.add(2.45);
        list2.add(2.35);
        list2.add(2.34);
        List<String> list3=new ArrayList<>();
        list3.add("abc");
        list3.add("ac");
        list3.add("ab");
        list3.add("bc");

        //调用方法
        //List list =new ArrayList<Integer>();

        //泛型不支持向上造型（不是声明类和实际创建类）
        //List<Number> list=new ArrayList<Integer>();
        m(list1);
        m(list2);
        //m(list3);
    }
    //遍历所有的数值类型的集合对象身上的元素对象
    //?---泛型通配符的意思，表面泛型可以指定的类型
    //<? extends Number>---泛型可以指定为Number类以及子类
    //<? extends 类/接口>---泛型可以指定为类以及子类/接口以及子接口
    //泛型的上限
    public static void m(List<? extends Number> list){
        for(Object o:list){
            System.out.println(o);
        }
    }

    //可以指定为String类以及父类
    //<? super 类/接口>---可以指定为类以及父类/接口以及父接口
    //泛型的下限
    public void n(List<? super String> list){

    }
}
